<template>
  <div class="mine-container">
    <!-- 已经登录的头部 -->
    <div
      class="done_Login"
      v-if="token"
    >
      <div class="userBaseInfo">
        <div class="userInfoLeft">
          <!-- 图片区域,这里用到了组件提供的image  提供的功能会更强大 -->
          <van-image
            class="userInfoImg"
            fit="cover"
            :src="userInfo.photo"
            round
          ></van-image>
          <span>{{ userInfo.name }}</span>
        </div>
        <div class="userInfoRight">
          <van-button
            type="default"
            size="mini"
            round
            @click="$router.push('/userdata')"
          >编辑资料</van-button>
        </div>
      </div>

      <!-- -------------------------------------- -->
      <div class="dataStar">
        <div class="data-item">
          <span class="count">{{ userInfo.art_count }}</span>
          <span class="text">头条</span>
        </div>
        <div class="data-item">
          <span class="count">{{ userInfo.follow_count }}</span>
          <span class="text">关注</span>
        </div>
        <div class="data-item">
          <span class="count">{{ userInfo.fans_count }}</span>
          <span class="text">粉丝</span>
        </div>
        <div class="data-item">
          <span class="count">{{ userInfo.like_count }}</span>
          <span class="text">获赞</span>
        </div>
      </div>
    </div>
    <!-- 未登录的头部 -->
    <div
      class="not_Login"
      v-else
    >
      <!-- 图片和登录注册部分 -->
      <div
        class="login_btn"
        @click="$router.push('/login')"
      >
        <img src="../../assets/mobile.png">
        <span>登录 / 注册</span>
      </div>
    </div>

    <!-- 宫格导航模块 -->
    <van-grid
      class="gird-nav"
      :column-num="2"
      clickable
    >
      <van-grid-item>
        <!-- 这里需要使用插槽 -->
        <i
          slot="icon"
          class="toutiao toutiao-shoucang"
        ></i>
        <span
          slot="text"
          class="text"
        >收藏</span>
      </van-grid-item>
      <van-grid-item>
        <!-- 这里需要使用插槽 -->
        <i
          slot="icon"
          class="toutiao toutiao-lishi"
        ></i>
        <span
          slot="text"
          class="text"
        >历史</span>
      </van-grid-item>
    </van-grid>
    <!-- 小智同学区域 -->
    <van-cell
      title="消息通知"
      is-link
    />
    <van-cell
      class="mb-9"
      title="小智同学"
      is-link
    />
    <van-cell
      class="logout-cell"
      clickable
      title="退出登录"
      @click="onLogOut"
    />

  </div>
</template>

<script>
import { mapState } from 'vuex'
// 导入获取用户基本信息的接口请求
import { getUserInfo } from '../../api/user.js'
export default {
  // 组件名称
  name: '',
  // 局部注册的组件
  components: {},
  // 组件参数 接收来自父组件的数据
  props: {},
  // 组件状态值
  data () {
    return {
      //  用户基本信息的数据源
      userInfo: {}
    }
  },
  // 计算属性
  computed: {
    // 暴露共享数据的值
    ...mapState(['token'])
  },
  // 侦听器
  watch: {},
  // 生命周期钩子   注：没用到的钩子请自行删除
  /**
  * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
  */
  created () {
    // 获取用户基本信息的相关处理函数  页面加载就调用
    // 添加if的条件语句 会更加严谨一些
    if (this.token) {
      this.loadUserInfo()
    }
  },
  /**
  * el 被新创建的 vm.el 替换，并挂载到实例上去之后调用该钩子。
  * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.el 也在文档内。
  */
  mounted () { },
  // 组件方法
  methods: {
    // 点击退出登录的按钮的相关操作
    onLogOut: function () {
      // 点击退出登录的会话框
      // 在组件中需要使用 this.$dialog 来调用弹框组件
      this.$dialog.confirm({
        title: '确认退出吗？'
      }).then(() => { // 点击弹框确认执行then
        // on confirm
        // 确认退出：清除登录状态（容器中的 user + 本地存储中的 user）
        // 这里只需要清除共享数据里面的token就行了
        this.$store.commit('setLoginToken', null)
      }).catch(() => { // 点击弹框取消执行catch
        // on cancel
        console.log('取消执行这里')
      })
    },
    // 定义获取用户基本信息的接口函数
    loadUserInfo: async function () {
      // 调用获取用户基本信息的函数
      try {
        const { data } = await getUserInfo()
        console.log(data)
        // 完成复制的操作
        this.userInfo = data.data
      } catch (error) {
        console.log(error)
        this.$toast('获取用户数据失败!请稍后再试')
      }
    }
  }
}
</script>

<style scoped lang="less">
// 未登录头部的样式
.not_Login {
  height: 361px;
  background-image: url("../../assets/banner.png");
  background-size: cover;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
// 头部的图片和文字的样式
.login_btn {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
.login_btn span {
  font-size: 28px;
  color: white;
}
.login_btn img {
  width: 132px;
  height: 132px;
  margin-bottom: 15px;
}

// 登录的头部的相关样式
.done_Login {
  background-image: url("../../assets/banner.png");
  background-size: cover;
}
// 用户信息的模块
.userBaseInfo {
  height: 231px;
  padding: 76px 32px 23px;
  box-sizing: border-box;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
// 左边的相关样式
.userInfoLeft {
  display: flex;
  align-items: center;
}
.userInfoLeft span {
  font-size: 30px;
  color: #fff;
}
// 图片的相关样式
.userInfoImg {
  width: 132px;
  height: 132px;
  margin-right: 23px;
  border: 4px solid pink;
}
// 下面的头条获赞啥的部分
.dataStar {
  display: flex;
  justify-content: center;
  align-items: center;
  .data-item {
    display: flex;
    flex: 1;
    height: 130px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: white;
    .count {
      font-size: 36px;
    }
    .text {
      font-size: 23px;
    }
  }
}
// 宫格导航的相关样式
.gird-nav {
  height: 141px;
  i.toutiao {
    font-size: 45px;
  }
  .toutiao-shoucang {
    color: #eb5253;
  }
  .toutiao-lishi {
    color: #ff9d1d;
  }
  span.text {
    font-size: 28px;
  }
}
// 小智同学区域
.mb-9 {
  margin-bottom: 10px;
}
// 退出登录的相关区域
.logout-cell {
  text-align: center;
  color: #d86262;
}
</style>
